/*
 * reporte.java
 *
 * Created on 3 de agosto de 2007, 12:40
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package utiles;
import java.sql.Connection;
import java.util.*;
import java.lang.*;
import javax.swing.*;
import net.sf.jasperreports.engine.*;
import net.sf.jasperreports.engine.export.*;
import net.sf.jasperreports.engine.util.*;
import net.sf.jasperreports.view.*;

/*
 *
 * @author admin
 */
public class reporte extends Thread {
    String archivo;
    Connection conexion;
    JasperPrint print;
    Map parametros;
    boolean xls = false, pdf = false,pantalla = true;
    String archivoxls="",archivopdf="";
    
    
    /** Creates a new instance of reporte */
    public reporte(String arch,Connection cone, boolean xls, boolean pdf,boolean pantalla,String ruta) {
        archivo=arch;
        conexion=cone;
        parametros=new HashMap();
        this.xls = xls;
        this.pdf = pdf;
        this.pantalla = pantalla;
        archivoxls = ruta;
        archivopdf = archivoxls+"pdf";
        archivoxls+="xls";
    }
    public reporte(String arch,Connection cone) {
        archivo=arch;
        conexion=cone;
        parametros=new HashMap();        
        archivoxls = archivo.substring(0,archivo.length()-6);
        archivopdf = archivoxls+"pdf";
        archivoxls+="xls";
    }
    public reporte(String arch,Connection cone,Object[][] para, boolean xls, boolean pdf,boolean pantalla,String ruta) {
        archivo=arch;
        conexion=cone;
        parametros=new HashMap();
        for(int i=0;i<para.length;i++){
            parametros.put(para[i][0],para[i][1]);            
        }
        this.xls = xls;
        this.pdf = pdf;
        this.pantalla = pantalla;
        //La variable ruta solo se envia la direccion y el punto.
        archivoxls = ruta;
        archivopdf = archivoxls+"pdf";
        archivoxls+="xls";
    }
    public reporte(String arch,Connection cone,Object[][] para) {
        archivo=arch;
        conexion=cone;
        parametros=new HashMap();
        for(int i=0;i<para.length;i++){
            parametros.put(para[i][0],para[i][1]);            
        }        
        archivoxls = archivo.substring(0,archivo.length()-6);
        archivopdf = archivoxls+"pdf";
        archivoxls+="xls";
    }    
    public void run(){
        imprimir();
    }
    public void imprimir(){
        try {
            parametros.put("REPORT_LOCALE", java.util.Locale.ENGLISH);            
            print = JasperFillManager.fillReport(archivo,parametros,conexion);
            //print.setLocaleCode(java.util.Locale.ENGLISH.toString());
            //print.setTimeZoneId("PST");
            //System.out.println(java.util.Locale.ENGLISH.toString());            
            //System.out.println(java.util.Locale.ENGLISH.toString());
          
           // JasperExportManager ae=new JasperExportManager();
     /* try{
            JRGraphics2DExporter a=new JRGraphics2DExporter();
            a.setParameter(JRExporterParameter.JASPER_PRINT,print);
          a.setParameter(JRExporterParameter.OUTPUT_FILE_NAME,"c:/hh.java");
          
            a.exportReportToGraphics2D();
      }catch(JRException f){
          f.printStackTrace();
      }catch(Exception e){
          e.printStackTrace();
      }*/           
            String [] sheetNames={"hoja1"};
            if(this.xls == true){
                JRXlsExporter xlsExporter = new JRXlsExporter();
                xlsExporter.setParameter(JRXlsExporterParameter.SHEET_NAMES, sheetNames);
                xlsExporter.setParameter(JRExporterParameter.JASPER_PRINT, print);
                xlsExporter.setParameter(JRExporterParameter.OUTPUT_FILE_NAME,archivoxls);                
                xlsExporter.setParameter(JRXlsExporterParameter.IS_ONE_PAGE_PER_SHEET, Boolean.FALSE);
                xlsExporter.setParameter(JRXlsExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_ROWS, Boolean.TRUE);
                //xlsExporter.setParameter(JRXlsExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_COLUMNS, Boolean.TRUE);
                xlsExporter.setParameter(JRXlsExporterParameter.IS_WHITE_PAGE_BACKGROUND, Boolean.FALSE);                
                xlsExporter.exportReport();              
            }
            if(this.pdf == true){
                JRPdfExporter pdfexporter=new  JRPdfExporter();
                pdfexporter.setParameter(JRExporterParameter.JASPER_PRINT, print);
                pdfexporter.setParameter(JRExporterParameter.OUTPUT_FILE_NAME,archivopdf);
                pdfexporter.exportReport();
            }            
            if(this.pantalla==true){
                JasperViewer.viewReport(print,false);
            }
         } catch (JRException ex) {
                    ex.printStackTrace();
                    mensaje(ex.toString());
            }

    }
    
     public  void mensaje(String mens){
         javax.swing.JOptionPane.showMessageDialog( null,mens,
      "Mensaje de Informacion",javax.swing.JOptionPane.ERROR_MESSAGE);
    }
     
}
